package com.ijpay.wxpay.model;

import com.fasterxml.jackson.annotation.JsonIgnore;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.data.annotation.Id;

import java.math.BigDecimal;
import java.util.Date;

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@ApiModel(description = "订单查询-返回报文",value = "订单查询-返回报文")
public class OdrOrder {
    /**
     * 订单ID
     */
    @Id
    @ApiModelProperty(notes = "订单ID",required = true,example = "",position = 1)
    private String orderId;

    /**
     * 下单手机号
     */
    @ApiModelProperty(notes = "下单手机号",required = true,example = "",position = 1)
    private String mobile;

    /**
     * 订单支付方式 00-线下支付;01-线上微信;02-线上支付宝
     */
    @ApiModelProperty(notes = "订单支付方式 00-线下支付;01-线上微信;02-线上支付宝",required = true,example = "",position = 1)
    private String orderPayType;

    /**
     * 商品ske编码
     */
    @ApiModelProperty(notes = "商品Id",required = true,example = "",position = 1)
    private String goodId;

    /**
     * 商品ske编码
     */
    @ApiModelProperty(notes = "商品sku编码",required = true,example = "",position = 1)
    private String goodSkuCode;

    /**
     * 商品名称
     */
    @ApiModelProperty(notes = "商品名称",required = true,example = "",position = 1)
    private String goodName;

    /**
     * 商品简介
     */
    @ApiModelProperty(notes = "商品简介",required = true,example = "",position = 1)
    private String goodResume;

    /**
     * 商品主图地址
     */
    @ApiModelProperty(notes = "商品主图地址",required = true,example = "",position = 1)
    private String goodImgUrl;

    /**
     * 商品数量
     */
    @ApiModelProperty(notes = "商品数量",required = true,example = "",position = 1)
    private Integer goodCount;

    /**
     * 商品单位
     */
    @ApiModelProperty(notes = "商品单位",required = true,example = "",position = 1)
    private String goodUnit;

    /**
     * 订单应付金额
     */
    @ApiModelProperty(notes = "订单应付金额",required = true,example = "",position = 1)
    private BigDecimal orderCash;

    /**
     * 地址信息
     */
    @ApiModelProperty(notes = "地址信息",required = true,example = "",position = 1)
    private String addressInfo;

    /**
     * 000-待支付、001-已取消、002-待服务、003-服务中、004-已完成、005-已退款
     */
    @ApiModelProperty(notes = "订单状态 000-待支付、001-已取消、002-待服务、003-服务中、004-已完成、005-已退款",required = true,example = "",position = 1)
    private String orderStatus;

    /**
     * 订单生成时间
     */
    @ApiModelProperty(notes = "订单生成时间",required = true,example = "",position = 1)
    private Date createTime;

    /**
     * 支付有效期,预留字段后续根据该字段进行自动取消
     */
    @ApiModelProperty(notes = "支付有效期,预留字段后续根据该字段进行自动取消",required = true,example = "",position = 1)
    @JsonIgnore
    private Date payEffect;

    /**
     * 支付状态变更最新时间
     */
    @ApiModelProperty(notes = "支付状态变更最新时间",required = true,example = "",position = 1)
    private Date statusUpdateTime;

    /**
     * 现金回退状态 00-未回退、01-已回退 02-回退失败
     */
    @ApiModelProperty(notes = "现金回退状态 00-未回退、01-已回退 02-回退失败",required = true,example = "",position = 1)
    private String caseReturnStatus;

    /**
     * 现金回退结果
     */
    @ApiModelProperty(notes = "现金回退结果",required = true,example = "",position = 1)
    private String caseReturnResult;

    @ApiModelProperty(notes = "订单备注",required = true,example = "",position = 1)
    private String note;

    @ApiModelProperty(notes = "订单预约时间",required = true,example = "",position = 1)
    private Date makeAppointment;
    /**
     * 订单预约段
     */
    @ApiModelProperty(notes = "订单预约段  ",required = true,example = "",position = 14)
    private String serviceTimeQuantum;

    @ApiModelProperty(notes = "订单类型 01-服务订单, 02-视频订单",required = true,example = "",position = 15)
    private String orderType;

    @ApiModelProperty(notes = "服务开始时间",required = true,example = "",position = 1)
    private Date serviceSTime;
    @ApiModelProperty(notes = "服务结束时间",required = true,example = "",position = 1)
    private Date serviceETime;
    @ApiModelProperty(notes = "场馆地址",required = true,example = "",position = 1)
    private String siteAddr;

    @ApiModelProperty(notes = "支付信息",required = true,example = "",position = 1)
    private OdrOrderPay odrOrderPay;

}